--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sbapp/plyer/platforms/linux/battery.py 0.2.4 (6b02a0c3) Text, 2.95 KB
T8b949e'''
Module of Linux API for plyer.battery.
'''
Tff7b72from T7ee787math Tff7b72import Te6edf3floor
Tff7b72from T7ee787os Tff7b72import Te6edf3environ
Tff7b72from T7ee787osT7ee787.T7ee787path Tff7b72import Te6edf3existsTb4b4b4, Te6edf3join
Tff7b72from T7ee787subprocess Tff7b72import Te6edf3PopenTb4b4b4, Te6edf3PIPE
Tff7b72from T7ee787plyerT7ee787.T7ee787facades Tff7b72import Te6edf3Battery
Tff7b72from T7ee787plyerT7ee787.T7ee787utils Tff7b72import Te6edf3whereis_exe
Tff7b72class T56d364LinuxBatteryTb4b4b4(Te6edf3BatteryTb4b4b4)Tb4b4b4:
T8b949e'''
Implementation of Linux battery API via accessing the sysclass power_supply
path from the kernel.
'''
Tff7b72def Td2a8ff_get_stateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3status Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffisChargingTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4, Ta5d6ff"Ta5d6ffpercentageTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4}
Te6edf3kernel_bat_path Tff7b72= Te6edf3joinTb4b4b4(Ta5d6ff'Ta5d6ff/sysTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffclassTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffpower_supplyTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffBAT0Ta5d6ff'Tb4b4b4)
Te6edf3uevent Tff7b72= Te6edf3joinTb4b4b4(Te6edf3kernel_bat_pathTb4b4b4, Ta5d6ff'Ta5d6ffueventTa5d6ff'Tb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3ueventTb4b4b4) Tff7b72as Te6edf3fleTb4b4b4:
Te6edf3lines Tff7b72= Tb4b4b4[
Te6edf3lineTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3line Tff7b72in Te6edf3fleTff7b72.Td2a8ffreadlinesTb4b4b4(Tb4b4b4)
Tb4b4b4]
Te6edf3output Tff7b72= Tb4b4b4{
Te6edf3lineTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff=Ta5d6ff'Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4: Te6edf3lineTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff=Ta5d6ff'Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]
Tff7b72for Te6edf3line Tff7b72in Te6edf3lines
Tb4b4b4}
Te6edf3is_charging Tff7b72= Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_STATUSTa5d6ff'Tb4b4b4] Tff7b72== Ta5d6ff'Ta5d6ffChargingTa5d6ff'
Te6edf3total Tff7b72= Tffa657floatTb4b4b4(Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_CHARGE_FULLTa5d6ff'Tb4b4b4]Tb4b4b4)
Te6edf3now Tff7b72= Tffa657floatTb4b4b4(Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_CHARGE_NOWTa5d6ff'Tb4b4b4]Tb4b4b4)
Te6edf3capacity Tff7b72= Te6edf3floorTb4b4b4(Te6edf3now Tff7b72/ Te6edf3total Tff7b72* T79c0ff100Tb4b4b4)
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffpercentageTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3capacity
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffisChargingTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3is_charging
Tff7b72return Te6edf3status
Tff7b72class T56d364UPowerBatteryTb4b4b4(Te6edf3BatteryTb4b4b4)Tb4b4b4:
T8b949e'''
Implementation of UPower battery API.
'''
Tff7b72def Td2a8ff_get_stateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# if no LANG specified, return empty string
Te6edf3old_lang Tff7b72= Te6edf3environTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4)
Te6edf3environTb4b4b4[Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4] Tff7b72= Ta5d6ff'Ta5d6ffCTa5d6ff'
Te6edf3status Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffisChargingTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4, Ta5d6ff"Ta5d6ffpercentageTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4}
T8b949e# We are supporting only one battery now
T8b949e# this will fail if there is no object with such path,
T8b949e# however it's safer than 'upower -d' which provides
T8b949e# multiple unrelated 'state' and 'percentage' keywords
Te6edf3dev Tff7b72= Ta5d6ff"Ta5d6ff/org/freedesktop/UPower/devices/battery_BAT0Ta5d6ff"
Te6edf3upower_process Tff7b72= Te6edf3PopenTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ffupowerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--show-infoTa5d6ff"Tb4b4b4, Te6edf3devTb4b4b4]Tb4b4b4,
Te6edf3stdoutTff7b72=Te6edf3PIPE
Tb4b4b4)
Te6edf3output Tff7b72= Te6edf3upower_processTff7b72.Td2a8ffcommunicateTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Te6edf3environTb4b4b4[Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3old_lang
Tff7b72if Tff7b72not Te6edf3outputTb4b4b4:
Tff7b72return Te6edf3status
Te6edf3state Tff7b72= Te6edf3percentage Tff7b72= Tff7b72None
Tff7b72for Te6edf3line Tff7b72in Te6edf3outputTff7b72.Td2a8ffsplitlinesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Ta5d6ff'Ta5d6ffstateTa5d6ff' Tff7b72in Te6edf3lineTb4b4b4:
Te6edf3state Tff7b72= Te6edf3lineTff7b72.Td2a8ffrpartitionTb4b4b4(Ta5d6ff'Ta5d6ff:Ta5d6ff'Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Ta5d6ff'Ta5d6ffpercentageTa5d6ff' Tff7b72in Te6edf3lineTb4b4b4:
Te6edf3percentage Tff7b72= Te6edf3lineTff7b72.Td2a8ffrpartitionTb4b4b4(Ta5d6ff'Ta5d6ff:Ta5d6ff'Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4[Tb4b4b4:Tff7b72-T79c0ff1Tb4b4b4]
T8b949e# switching decimal comma to dot
T8b949e# (different LC_NUMERIC locale)
Te6edf3percentage Tff7b72= Tffa657floatTb4b4b4(
Te6edf3percentageTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff,Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4)
Tb4b4b4)
Tff7b72if Te6edf3stateTb4b4b4:
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffisChargingTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3state Tff7b72== Ta5d6ff"Ta5d6ffchargingTa5d6ff"
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffpercentageTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3percentage
Tff7b72return Te6edf3status
Tff7b72def Td2a8ffinstanceTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e'''
Instance for facade proxy.
'''
Tff7b72import T7ee787sys
Tff7b72if Te6edf3whereis_exeTb4b4b4(Ta5d6ff'Ta5d6ffupowerTa5d6ff'Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3UPowerBatteryTb4b4b4(Tb4b4b4)
Te6edf3sysTff7b72.Td2a8ffstderrTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ff"Ta5d6ffupower not found.Ta5d6ff"Tb4b4b4)
Tff7b72if Te6edf3existsTb4b4b4(Te6edf3joinTb4b4b4(Ta5d6ff'Ta5d6ff/sysTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffclassTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffpower_supplyTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffBAT0Ta5d6ff'Tb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3LinuxBatteryTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3BatteryTb4b4b4(Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────